//package com.vf.admin.common.db.SqlUitls;
//
//import java.beans.IntrospectionException;
//import java.lang.reflect.InvocationTargetException;
//import java.sql.PreparedStatement;
//import java.sql.ResultSet;
//import java.sql.ResultSetMetaData;
//import java.sql.SQLException;
//import java.util.ArrayList;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//import com.vf.admin.common.db.utils.PojoBySql;
//import org.apache.log4j.Logger;
//
//import com.alibaba.fastjson.JSON;
//import com.alibaba.fastjson.serializer.SerializerFeature;
//
//
//public class QuerySql {
//	private Logger log = Logger.getLogger(QuerySql.class);
//	public static QuerySql getInstance(){
//		return new QuerySql();
//	}
//	/**
//	 * 根据条件查询单个对象
//	 */
//	public Object getObjByWhere(Object obj,SelectColumn instance){
//		PojoBySql pojobysql = new PojoBySql();
//		try {
//			PojoConverSql.getInstance().pojoBySql(obj, pojobysql);
//		} catch (IllegalAccessException e) {
//			e.printStackTrace();
//		} catch (InvocationTargetException e) {
//			e.printStackTrace();
//		} catch (NoSuchMethodException e) {
//			e.printStackTrace();
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (IntrospectionException e) {
//			e.printStackTrace();
//		}
//
//		//拼接sql
//		StringBuffer sqlbuffer = new StringBuffer();
//		StringBuffer columnbuffer = new StringBuffer();
//		StringBuffer selecBuffer = new StringBuffer();
//		if(pojobysql.getColumnDataNameMap()!=null && pojobysql.getColumnDataNameMap().size()>=1){
//			for(Map.Entry<String , Object> entry: pojobysql.getColumnDataNameMap().entrySet()) {
//				Object valueobj = pojobysql.getColumnDataNameMap().get(entry.getKey().toString());
//				selecBuffer.append(entry.getKey().toString()+",");
//			}
//			selecBuffer = selecBuffer.delete(selecBuffer.lastIndexOf(","), selecBuffer.length());
//		}
//
//		if(instance!=null && instance.getSelectcolumn()!=null && instance.getSelectcolumn()!=null && instance.getSelectcolumn().size()>=1){
//			columnbuffer.append(" where ");
//			for(Map.Entry<String , Object> entry: instance.getSelectcolumn().entrySet()) {
//				columnbuffer.append(entry.getKey()+" ? and ");
//			}
//			columnbuffer = columnbuffer.delete(columnbuffer.lastIndexOf("and"), columnbuffer.length());
//		}else{
//			if(pojobysql.getIndexName()!=null && !pojobysql.getIndexName().trim().equals("")){
//				Object valueobj = pojobysql.getColumnDateMap().get(pojobysql.getIndexName().toString());
//				if(valueobj!=null && !valueobj.toString().trim().equals("")&& !valueobj.toString().trim().equals("0")){
//					columnbuffer.append(" where "+pojobysql.getIndexName()+" = ? ");
//				}
//			}
//
//		}
//		try {
//			sqlbuffer.append("select "+selecBuffer+" from "+pojobysql.getTableName()+columnbuffer);
//			String sql = sqlbuffer.toString();
//			System.out.println(sql);
//			PreparedStatement ps = DbUtils.getConnection().prepareStatement(sql);
//			int j = 1;
//			if(instance!=null && instance.getSelectcolumn()!=null && instance.getSelectcolumn().size()>=1){
//				for(Map.Entry<String , Object> entry: instance.getSelectcolumn().entrySet()) {
//					Object valueobj = instance.getSelectcolumn().get(entry.getKey().toString());
//					ps.setObject(j, valueobj);
//					j++;
//				}
//			}else{
//				if(pojobysql.getIndexName()!=null && !pojobysql.getIndexName().trim().equals("")){
//					Object valueobj = pojobysql.getColumnDateMap().get(pojobysql.getIndexName().toString());
//					if(valueobj!=null && !valueobj.toString().trim().equals("")&& !valueobj.toString().trim().equals("0")){
//						ps.setString(j, pojobysql.getColumnDateMap().get(pojobysql.getIndexName()).toString());
//					}
//				}
//			}
//			ResultSet rs = ps.executeQuery();
//			return resultByObj(rs,obj.getClass());
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (SecurityException e) {
//			e.printStackTrace();
//		}
//		return null;
//	}
//
//
//	/**
//	 * 根据条件查询列表(分页)
//	 */
//	public List getListByColumnPage(Object obj,SelectColumn instance,SplitPageBean splitPage){
//		PojoBySql pojobysql = new PojoBySql();
//		try {
//			PojoConverSql.getInstance().pojoBySql(obj, pojobysql);
//		} catch (IllegalAccessException e) {
//			e.printStackTrace();
//		} catch (InvocationTargetException e) {
//			e.printStackTrace();
//		} catch (NoSuchMethodException e) {
//			e.printStackTrace();
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (IntrospectionException e) {
//			e.printStackTrace();
//		}
//
//		//拼接sql
//		StringBuffer sqlbuffer = new StringBuffer();
//		StringBuffer columnbuffer = new StringBuffer();
//
//		StringBuffer selecBuffer = new StringBuffer();
//		if(pojobysql.getColumnDataNameMap()!=null && pojobysql.getColumnDataNameMap().size()>=1){
//			for(Map.Entry<String , Object> entry: pojobysql.getColumnDataNameMap().entrySet()) {
//				Object valueobj = pojobysql.getColumnDataNameMap().get(entry.getKey().toString());
//				selecBuffer.append(entry.getKey().toString()+",");
//			}
//			selecBuffer = selecBuffer.delete(selecBuffer.lastIndexOf(","), selecBuffer.length());
//		}
//
//		if(instance!=null && instance.getSelectcolumn()!=null && instance.getSelectcolumn().size()>=1){
//			columnbuffer.append(" where ");
//			for(Map.Entry<String , Object> entry: instance.getSelectcolumn().entrySet()) {
//				columnbuffer.append(entry.getKey()+" ? and ");
//			}
//			columnbuffer = columnbuffer.delete(columnbuffer.lastIndexOf("and"), columnbuffer.length());
//		}
//		try {
//			sqlbuffer.append("select "+selecBuffer+" from "+pojobysql.getTableName()+columnbuffer);
//			if(instance.getPaixucolumn()!=null && instance.getPaixucolumn().size()==1){
//				for(Map.Entry<String , Object> entry: instance.getPaixucolumn().entrySet()) {
//					sqlbuffer.append(entry.getKey());
//				}
//			}
//			String countSql = "select count(*)  from (" + sqlbuffer + ") as id";
//			int count = this.getCountByColumn(obj, instance.getSelectcolumn());
//
//			if(splitPage!=null){
//				// 将总记录数赋值给splitPageBean对象
//				if((int)count > 0){
//					splitPage.setTotalCount((int)count);
//				}else{
//					splitPage.setTotalCount(0);
//				}
//				sqlbuffer.append(" limit "+splitPage.getFirstRecord()+ " , "+splitPage.getMaxRecord());
//			}
//			String sql = sqlbuffer.toString();
//			PreparedStatement ps = DbUtils.getConnection().prepareStatement(sqlbuffer.toString());
//			int j = 1;
//			if(instance.getSelectcolumn()!=null){
//				for(Map.Entry<String , Object> entry: instance.getSelectcolumn().entrySet()) {
//					Object valueobj = instance.getSelectcolumn().get(entry.getKey().toString());
//					ps.setObject(j, valueobj);
//					j++;
//				}
//			}
//			ResultSet rs = ps.executeQuery();
//			return resultListByObj(rs,obj);
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (SecurityException e) {
//			e.printStackTrace();
//		}
//		return null;
//	}
//
//
//	/**
//	 * 根据条件查询总数量
//	 */
//	public int getCountByColumn(Object obj,HashMap<String , Object> whereMap){
//		PojoBySql pojobysql = new PojoBySql();
//		try {
//			PojoConverSql.getInstance().pojoBySql(obj, pojobysql);
//		} catch (IllegalAccessException e) {
//			e.printStackTrace();
//		} catch (InvocationTargetException e) {
//			e.printStackTrace();
//		} catch (NoSuchMethodException e) {
//			e.printStackTrace();
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (IntrospectionException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//
//		//拼接sql
//		StringBuffer sqlbuffer = new StringBuffer();
//		StringBuffer columnbuffer = new StringBuffer();
//
//		StringBuffer selecBuffer = new StringBuffer();
//		if(pojobysql.getColumnDataNameMap()!=null && pojobysql.getColumnDataNameMap().size()>=1){
//			for(Map.Entry<String , Object> entry: pojobysql.getColumnDataNameMap().entrySet()) {
//				Object valueobj = pojobysql.getColumnDataNameMap().get(entry.getKey().toString());
//				selecBuffer.append(entry.getKey().toString()+",");
//			}
//			selecBuffer = selecBuffer.delete(selecBuffer.lastIndexOf(","), selecBuffer.length());
//		}
//		if(whereMap!=null && whereMap.size()>=1){
//			columnbuffer.append(" where ");
//			for(Map.Entry<String , Object> entry: whereMap.entrySet()) {
//				columnbuffer.append(entry.getKey()+" ? and ");
//			}
//			columnbuffer = columnbuffer.delete(columnbuffer.lastIndexOf("and"), columnbuffer.length());
//		}
//		try {
//			sqlbuffer.append("select "+selecBuffer+" from "+pojobysql.getTableName()+columnbuffer);
//			String sql = sqlbuffer.toString();
//			PreparedStatement ps = DbUtils.getConnection().prepareStatement(sqlbuffer.toString());
//
//			int j = 1;
//			if(whereMap!=null){
//				for(Map.Entry<String , Object> entry: whereMap.entrySet()) {
//					Object valueobj = whereMap.get(entry.getKey().toString());
//					ps.setObject(j, valueobj);
//					j++;
//				}
//			}
//			ResultSet rs = ps.executeQuery();
//			List list = resultListByObj(rs,obj);
//			return list!=null && list.size()>=1 ? list.size() : 0;
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (SecurityException e) {
//			e.printStackTrace();
//		}
//		return 0;
//	}
//
//
//
//
//	/**
//	 * 根据条件查询列表
//	 */
//	public List getListByColumn(Object obj,HashMap<String , Object> whereMap){
//		PojoBySql pojobysql = new PojoBySql();
//		try {
//			PojoConverSql.getInstance().pojoBySql(obj, pojobysql);
//		} catch (IllegalAccessException e) {
//			e.printStackTrace();
//		} catch (InvocationTargetException e) {
//			e.printStackTrace();
//		} catch (NoSuchMethodException e) {
//			e.printStackTrace();
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (IntrospectionException e) {
//			// TODO Auto-generated catch block
//			e.printStackTrace();
//		}
//
//		//拼接sql
//		StringBuffer sqlbuffer = new StringBuffer();
//		StringBuffer columnbuffer = new StringBuffer();
//
//		StringBuffer selecBuffer = new StringBuffer();
//		if(pojobysql.getColumnNameMap()!=null && pojobysql.getColumnNameMap().size()>=1){
//			for(Map.Entry<String , Object> entry: pojobysql.getColumnNameMap().entrySet()) {
//				Object valueobj = pojobysql.getColumnNameMap().get(entry.getKey().toString());
//				selecBuffer.append(entry.getKey().toString()+",");
//			}
//			selecBuffer = selecBuffer.delete(selecBuffer.lastIndexOf(","), selecBuffer.length());
//		}
//
//		if(whereMap!=null && whereMap.size()>=1){
//			columnbuffer.append(" where ");
//			for(Map.Entry<String , Object> entry: whereMap.entrySet()) {
//				columnbuffer.append(entry.getKey()+" ? ,");
//			}
//			columnbuffer = columnbuffer.delete(columnbuffer.lastIndexOf(","), columnbuffer.length());
//		}
//
//		try {
//			sqlbuffer.append("select "+selecBuffer+" from "+pojobysql.getTableName()+columnbuffer);
//			String sql = sqlbuffer.toString();
//			PreparedStatement ps = DbUtils.getConnection().prepareStatement(sqlbuffer.toString());
//			int j = 1;
//			if(whereMap!=null){
//				for(Map.Entry<String , Object> entry: whereMap.entrySet()) {
//					Object valueobj = whereMap.get(entry.getKey().toString());
//					ps.setObject(j, valueobj);
//					j++;
//				}
//			}
//			ResultSet rs = ps.executeQuery();
//
//			return resultListByObj(rs,obj);
//		} catch (SQLException e) {
//			e.printStackTrace();
//		}catch (SecurityException e) {
//			e.printStackTrace();
//		}
//		return null;
//	}
//
//	/**
//	 * 结果集转换为对象(集合)
//	 * @param rs
//	 * @param obj
//	 * @return
//	 * @throws SQLException
//	 */
//	public List resultListByObj(ResultSet rs,Object obj) throws SQLException{
//		List list = new ArrayList();
//		ResultSetMetaData rsmd = rs.getMetaData();
//		int columnLenth = rsmd.getColumnCount();
//		Map map;
//		while (rs.next()) {
//			map = new HashMap();
//			for (int i = 1; i <= columnLenth; i++) {
//				map.put(rsmd.getColumnLabel(i), rs.getObject(i));
//			}
//			String text = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat);
//
//			Object obj2 = null;
//			try{
//				obj2 = JSON.parseObject(text, obj.getClass());
//				}catch(Exception e){
//					log.info("类型转换一场异常，请检查类属性与数据表的属性是否一致:" + e);
//					throw new RuntimeException("类型转换一场异常，请检查类属性与数据表的属性是否一致:" + e);
//				}
//			list.add(obj2);
//		}
//		return list;
//	}
//
//	/**
//	 * 结果集转换为对象(实体)
//	 * @param rs
//	 * @param clas
//	 * @return
//	 * @throws SQLException
//	 */
//	public Object resultByObj(ResultSet rs,Class clas) throws SQLException{
//		ResultSetMetaData rsmd = rs.getMetaData();
//		int columnLenth = rsmd.getColumnCount();
//		Object obj1 = null;
//		while (rs.next()) {
//			Map map = new HashMap();
//			for (int i = 1; i <= columnLenth; i++) {
//				map.put(rsmd.getColumnLabel(i), rs.getObject(i));
//			}
//			String text = JSON.toJSONStringWithDateFormat(map, "yyyy-MM-dd HH:mm:ss", SerializerFeature.WriteDateUseDateFormat);
//			try{
//				return obj1 = JSON.parseObject(text,clas);
//			}catch(Exception e){
//				log.info("类型转换一场异常，请检查类属性与数据表的属性是否一致:" + e);
//				throw new RuntimeException("类型转换一场异常，请检查类属性与数据表的属性是否一致:" + e);
//			}
//		}
//		return obj1;
//	}
//
//
//	@SuppressWarnings("unchecked")
//	private Object transfer(Class fieldType, Object value) {
//		Object os = null;
//		String typeString = fieldType.getSimpleName();
//
//		if ("String".equalsIgnoreCase(typeString)) {
//			os = value;
//		} else if ("int".equals(typeString) || "Integer".equals(typeString)) {
//			os = new Integer(Integer.parseInt(value.toString()));
//		} else if ("float".equals(typeString) || "Float".equals(typeString)) {
//			os = new Float(Float.parseFloat(value.toString()));
//		} else if ("double".equals(typeString) || "Double".equals(typeString)) {
//			os = new Double(Double.parseDouble(value.toString()));
//		}
//
//		return os;
//	}
//}
